Universal media player

ABSTRACT

A universal media player designed to improve a user&#39;s online media experience that is preferably embedded in an Internet browser is disclosed. The universal media player allows a user to navigate between different sources of media without requiring the downloading of the media player associated with the format of the media source. The universal media player includes an interface with user-actuable control buttons, the universal media player determining whether incoming media is playable by the universal media player. If the incoming media is playable by the universal media player, the media is intercepted as the media is downloaded and redirected to the universal media player. Determining if the media is playable is accomplished by identifying the type of incoming media and searching a table of MIME media types.

FIELD OF THE INVENTION

[0001] The present invention relates to computer software and, inparticular, to multimedia players for online Internet use.

BACKGROUND OF THE INVENTION

[0002] Media designed for distribution over the Internet come in manyforms and formats. Media players are software resident on computers thatinterpret incoming stream media and convert the media intohuman-perceivable form, i.e., into audio and video form for outputtingto a user. What is common to each media player is a uniform media formatand a unique user interface.

[0003] Because conventional Internet media players have their own uniquemedia formats and user interfaces, in the past, media players have beenincompatible. This incompatibility has created a variety of problems.For instance, if a user is sampling radio stations played by differentmedia players, an undesirable amount of time is spent juggling thevarious players and waiting for them to cue up media. This is notconducive to providing simple background music. Even when the streamingmedia being downloaded has a universal file format, problems existbecause each resident media player competes to register itself as beingthe owner of a given file format. For instance, almost all media playerscan play MP3 files as well as the private file format for which theplayer is expressly designed. When a user downloads streaming mediahaving a particular file format, the user will be queried to downloadthe media player associated with the format of the media. If the userselects to download the media player, the player installer will changethe user's file associations. For instance, if a user has been using theWinAMP® media player and decides to receive a Real Network stream ofmedia, the user will be asked if the Real Networks media player shouldbe downloaded. If the user specifies that the Real Networks media playershould be downloaded, the Real Networks media player installer willchange a user's file associations so that the Real Networks media playerwill, in the future play every media type saved in the user's file. As aresult, the user will lose the use of the WinAMP® media player.

[0004] In another scenario, a user may decide to listen to a firststreaming media radio station. The user will have to locate theappropriate link and open the necessary media player to launch theapplication. After managing the windows on the screen to return the userto the “working” window, the user may decide to listen to a secondstreaming media radio station which may employ a different player. Inorder to change media players, the user must first open the originalplayer window and activate the stop feature of the player's interface.Then, the user must locate the second streaming media radio station andactivate the link to start the second media. If the media playeremployed by the second streaming media radio station is not installed,activating the link will prompt the user to install a second player.This entire process requires the user to manage multiple windows inorder to listen to the second streaming media radio station. If the userforgets to stop the first media player, both media players will playsimultaneously, leading to noise. Changing the volume level of one mediaplayer may or may not affect the other media player so the user may beforced to separately locate and adjust both players' volume control.

[0005] Accordingly, there is a need for a universal media player thatimproves a user's online media experience and eliminates the burdensdiscussed above that are placed upon a user when juggling media playedby different media players. The present invention is directed tofulfilling this and other needs.

SUMMARY OF THE INVENTION

[0006] The present invention is directed to solving the above problemsby providing a universal media player designed to improve a user'sonline media experience. The universal media player allows a user tonavigate between different sources of media without requiring thedownloading of the media player associated with the format of the mediasource. Preferably, the universal media player is “embedded” in anotherprogram, preferably, an Internet browser, such that the interface of theuniversal media player is persistent when the interface of the programwithin which the universal media player is embedded. In the case of abrowser, preferably the interface of the embedded universal media playeris normally positioned within the frame of the browser interface, i.e.,a portion of the browser interface that normally does not change.

[0007] In accordance with the present invention a computer-implementablemethod of playing media designed for playing on various types of mediaplayers is provided. The method includes providing a universal mediaplayer that includes an interface with user-actuable control buttons,determining whether media to be downloaded associated with a dedicatedmedia player is playable by the universal media player, and if the mediato be downloaded associated with a dedicated media player is playable bythe universal media player, intercepting the media as the media isdownloaded and redirecting the media to the universal media player.

[0008] In accordance with other aspects of the present invention, amedia type table of MIME is searched to determine whether the media tobe downloaded associated with a dedicated media player is or is notplayable by the universal media player.

[0009] In accordance with further aspects of the present invention, inresponse to a request to change a media source, the universal mediaplayer determines the MIME type of the new media and instantiates amedia component object for the media. When the instantiated mediacomponent object is ready, a second media player is initialized, thefirst media player is stopped and hidden, and the second media player isdisplayed.

[0010] In accordance with yet other aspects of the present invention,the universal media player includes an interface that allows users tomake selections by actuating user-actuable controls that form part ofthe universal media player interface.

[0011] In accordance with still other aspects of the present invention,two universal media players can be locked and synchronized together.Preferably, synchronization is accomplished by a first user clicking ona uniform resource locator (URL) media link of the user's universalmedia player after the user's universal media player is locked to asecond user's universal media player. As a result, both universal mediaplayers receive the same media link, resulting in the users of bothmedia players listening to the same sound or viewing the same videosimultaneously. Alternatively, one user's universal media player can bethe source of media played by a second user's universal media player.The locking and synchronizing of universal media players can also beused to provide video internet meeting conferencing.

[0012] The invention has a number of advantages and features many ofwhich, like the foregoing, are intended to eliminate the need to have ahandful of separate media players each with a user interface havingdifferent control buttons. The present invention provides the user witha single interface having one set of control buttons (e.g. play, stop,volume, next and previous track) regardless of the source of media,providing the user with an uncluttered desktop. The interface is in aform that facilitates managing the user's online media experience evenwhile using the media player in the background. As noted above,preferably, a universal media player formed in accordance with thisinvention is embedded in an Internet browser.

BRIEF DESCRIPTION OF THE DRAWINGS

[0013] The foregoing aspects and many of the attendant advantages ofthis invention will become more readily appreciated as the same becomebetter understood by reference to the following detailed description,when taken in conjunction with the accompanying drawings, wherein:

[0014]FIG. 1 is a block diagram of a personal computer system suitablefor implementing an embodiment of the present invention;

[0015]FIG. 2 is a state activity diagram that illustrates the generaloperation of a universal media player formed in accordance with thepresent invention;

[0016]FIG. 3 is a state activity diagram that illustrates decoding amedia source MIME type suitable for use in FIG. 2;

[0017]FIG. 4 is a state activity diagram that illustrates cueing mediasuitable for use in FIG. 2,

[0018]FIG. 5 is a state activity diagram that illustrates playing mediasuitable for use in FIG. 2;

[0019]FIG. 6 is a flowchart illustrating a universal media player formedin accordance with the present invention;

[0020]FIG. 7 is a flowchart illustrating logic for decoding the MIMEtype of the media stream suitable for use in FIG. 6;

[0021]FIG. 8 is a flowchart illustrating logic for cueing the mediastream suitable for use in FIG. 6;

[0022]FIGS. 9A and 9B are flowcharts illustrating logic for activating auniversal media player interface and causing the universal media playerto play the media stream suitable for use in FIG. 6;

[0023]FIGS. 10A and 10B are flowcharts illustrating logic for activatingthe media player interface suitable for use in FIG. 9A;

[0024]FIG. 11 is a flowchart illustrating logic for deactivating themedia player interface suitable for use in FIG. 9A;

[0025]FIG. 12 is a copy of a screen shot of the interactive interface ofa universal media player formed in accordance with the present inventionembedded in the interface of an Internet browser;

[0026]FIG. 13 is a copy of a screen shot of the active interface of auniversal media player formed in accordance with the present inventionembedded in the interface of an Internet browser;

[0027]FIG. 14 is a copy of a screen shot of the interface of a universalmedia player of the type shown in FIGS. 12 and 13 when activated toreceive a video file;

[0028]FIG. 15 is a copy of a screen shot of the interface of a universalmedia player of the type shown in FIGS. 12 and 13 when playing a videofile;

[0029]FIG. 16 is a copy of a screen shot of the interface of a universalmedia player of the type shown in FIGS. 12 and 13 when playing an audiofile; and

[0030]FIGS. 17A and 17B are copies of screen shots of the interface of auniversal media player of the type shown in FIGS. 12 and 13 whenlaunching the media player interface in a larger window for an expandedview;

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

[0031] The present invention is directed to a universal media playerdesigned to improve a user's online experience. As will be betterunderstood from the following description, the universal media playerallows a user to navigate between different sources of media withoutrequiring the downloading of the media player associated with the formatof the media source. Preferably, the universal media player is“embedded” in another program, preferably, an Internet browser, suchthat the interface of the universal media player is persistent when theinterface of the program within which the universal media player isembedded. In the case of a browser, preferably the interface of theembedded universal media player is normally positioned within the frameof the browser interface, i.e., a portion of the browser interface thatnormally does not change.

[0032] The invention is preferably practiced in the context of anoperating system resident on a personal computer. FIG. 1 illustrates atypical hardware configuration of a personal computer suitable forimplementing a universal media player formed in accordance with thepresent invention. The personal computer illustrated in FIG. 1 includesa central processing unit 22, such as a conventional microprocessor, anda number of other units interconnected via a system bus 26. The systembus 26 may be any of several types of bus structures, including a memorybus or memory controller, a peripheral bus, and a local bus using any ofa variety of bus architectures. The computer 20 shown in FIG. 1 includesa system memory 24 comprised of nonvolatile and volatile memory such asRandom Access Memory (RAM) 30, Read Only Memory (ROM) 28, and BasicInput/Output System (BIOS) 32. The illustrated computer 20 also includesa hard disk drive interface 54 for connecting a Compact Disk (CD) drive34, a magnetic disk driver interface 56 for connecting a magnetic diskdrive 38, an optical drive interface 60 for connecting a DigitalVersatile Disk (DVD) 42, and a user input interface 64 for connectingperipheral devices such as a keyboard 60, a mouse 62, a microphone 70,speakers 72, and a video camera 74. The computer 20 has resident thereonan operating system 46 such as Microsoft's WINDOWS 2000®, applicationprograms 48, other program modules 50, and program data 52.

[0033] The computer 20 may operate in a network environment usinglogical connections to one or more remote computers 65. The remotecomputer 65 may be a personal computer, a server, a router, a networkPC, or other common network nodes. The logical connections include alocal area network (LAN) 66 and a wide area network (WAN) 67, but alsoinclude other networks. Such network environments are commonplace inoffice, enterprise-wide computer networks, intranets and the Internet.When used in a LAN network environment, the computer 20 is connected tothe LAN 66 through a network interface adapter 68. When used in a WANnetwork environment, the computer 20 includes a modem 69 or other meansfor establishing communications over the WAN 68, such as the Internet.

[0034] As is well understood by those skilled in the art, the World WideWeb (WWW) is a vast collection of interconnected documents, many writtenin various MIME types that are electronically stored at WWW sitesthroughout the Internet. MIME is the acronym for Multipurpose InternetMail Extensions, and is a protocol widely used on the Internet thatextends the Simple Mail Transfer Protocol (SMTP) to permit data, such asvideo, sound, and binary files, to be transmitted by Internet e-mailwithout having to be translated into ASCII format first. In other words,MIME types describe the contents of a document to a MIME compliantreceiving application. The receiving application refers to astandardized list of documents that are organized into MIME types andsubtypes to interpret the content of the file. An example of a MIME typeof text refers to a file that contains text written in HyperText MarkupLanguage (HTML). The MIME types are electronically stored at WWW sitesthroughout the Internet. A WWW site is a server connected to theInternet that has mass storage facilities for storing media andhypertext documents. Also, a WWW server runs administrative software forhandling requests for the stored media. A hypertext document normallyincludes a number of hyperlinks that may be identified in various ways(e.g., highlighted portions of text) which link the document to otherhypertext documents possibly stored at a WWW site elsewhere on theInternet. Each hyperlink is associated with a Uniform Resource Locator(URL) and provides the exact location of the linked document on a serverconnected to the Internet and describes the document. Thus, whenever ahypertext document is retrieved from any WWW server, the document isconsidered to be retrieved from the WWW. As is well known to thoseskilled in the art, a WWW server may also include facilities for storingand transmitting application programs, which are application programswritten in JAVA™ programming language from Sun Microsystems, forexecution on a remote computer. Likewise, a WWW server may also includefacilities for executing scripts or other application programs on theWWW server itself.

[0035] A consumer or other remote user may retrieve a media stream fromthe WWW via a WWW (Internet) browser application. The WWW (Internet)browser is a software application program for providing a graphical userinterface to the WWW. Upon request from the consumer via a WWW(Internet) browser, the browser accesses and retrieves the desired mediastream from the appropriate WWW server using the URL for the media and aprotocol known as MIME which is a protocol that is part of HyperTextTransfer Protocol (HTTP). HTTP is a higher level protocol than TCP/IPand is designed specifically for the requirements of the WWW. It is usedon top of TCP/IP to transfer hypertext or media-related documentsbetween servers and clients. The WWW (Internet) browser may alsoretrieve application programs from the WWW server, such as JAVA™applets, for execution on the client computer.

[0036] The present invention relates to a method for providing auniversal multimedia player for online Web (Internet) use. As will bereadily understood by one skilled in the relevant art, the presentinvention is not limited in its application to an Internet browser.Thus, it is to be understood that the disclosed embodiment is only byway of example and should not be construed as limiting. Preferably, thepresent invention is implemented in an object-oriented programminglanguage such as C++ using object-oriented programming techniques. Aswill be understood by those skilled in the art, Object-OrientedProgramming (OOP) objects are software components comprising datastructures and member functions which comprise operations on the data.Together, these elements of the components enable objects to modelvirtually any real-world entity in terms of its characteristics,represented by its data elements, and its behavior, represented by itsdata manipulation functions. The basic principles and benefits ofobject-oriented programming are encapsulation, polymorphism andinheritance. Objects hide, or encapsulate, the internal structure oftheir data and the algorithms by which their functions work. Instead ofdisplaying or exposing these implementation details, objects presentinterfaces that represent their abstractions. Polymorphism is when asoftware component can make a request of another software componentwithout knowing exactly what that component is. The component thatreceives the request interprets it and determines according to itsvariables and data how to execute the request. Inheritance allowsdevelopers to reuse pre-existing design and code. Through inheritance,developers can derive subclasses that inherit behaviors of othersoftware component objects, which a developer then customizes to meetparticular needs. Accordingly, in the present invention a mediacomponent object is created to model aspects of presenting media. Anexample of an object-oriented component base class that is used as afoundation for presenting media is Microsoft® COM (Component ObjectModel). As will be understood by those skilled in the art, COMcomponents are written in object-oriented languages such as C++ and arethe foundation of the OLE (Object Linking and Embedding), ActiveX, andDirectX specifications, where ActiveX® is a set of technologies thatenable software components to interact with one another in a networkedenvironment like the Internet. The ActiveX® controls are reusablesoftware components based on Microsoft® ActiveX® technology that is usedto add interactivity and more functionality, such as a popup menu, to aWeb page, applications, and software development tools. An ActiveX®control can be written in any number of object-oriented languages suchas C++, JAVA™, or Visual Basic®. Thus, ActiveX® controls can be embeddedin Web pages to produce animation and other multimedia effects,interactive objects and other applications. Furthermore, DirectX® is aWindows® application programming interface (API) that gives applicationsdirect access to a computer's sound and graphics hardware. DirectX®includes a number of components: to name a few, DirectDraw® forgraphics, DirectSound® for audio, and Direct3D® for three-dimensionalgraphics.

[0037]FIG. 2 is a state activity diagram that illustrates the generaloperation of a universal multi-media player formed in accordance withthe present invention. As will be understood by those skilled in theart, a state activity diagram is used to illustrate the performance ofan object or a state. Included in the state activity diagram are labeledevents of transitions that show what event or activity occurs betweenthe various states. According to one actual embodiment of the presentinvention, object-oriented software component states, also known asmember functions, are provided for performing start 200, decode MIMEtype 202, enable default player 204, cue media 210, playing 208, and end206.

[0038] Beginning with start state 200, a user starts an online mediaexperience by performing any number of activities or events relating tomedia. For example, a user may choose to click on a Uniform ResourceLink (URL) or a user (or the system) may open a window that includes anembedded media player dedicated to playing specific media. The endresult is the interception of a media stream download. Either type ofoccurrence activates a transition 220, 222 from the start state 200 tothe decode MIME type state 202. If the media is playable by theuniversal media player, the universal media player transitions 212 fromthe decode MIME type state 202 to the cue media state 210. If the mediais not playable by the universal multimedia player, the universalmultimedia player transitions 230 to the enable default player state204.

[0039] In contrast to the foregoing transitions, if the start activityis the insertion of CD or DVD media, the reception of a remotenavigation event (described below), or the receipt of a video and/ortelephone call, the embedded universal media player transitions 214,216, or 218 directly from the start state 200 to cue media state 210.

[0040] When the media is ready for playing, the universal media playertransitions 224 from the cue media state 210 to the playing state 208.The playing state includes a number of member functions for playing themedia stream that depend to some extent on the nature of the mediastream. After the media stream is completed, the universal media playertransitions 232 from the playing state 208 to the end state 206 wherethe media experience ends. Likewise, if the media stream was anon-playable type, enabling default player state 204, when thenon-playable media stream ends, the universal media player transitions234 from the enable default player state 204 to the end state 206 wherethe online media experience ends.

[0041] In order to better understand the operation of a universal mediaplayer formed in accordance with this invention, the decode MIME type,cue media, and playing states are illustrated in FIGS. 3, 4, and 5,respectively, and described below. As with FIG. 2, these figures are inthe form of object-oriented software components, also known as memberfunctions. In essence, they are objects of the embedded universal mediasoftware component object.

Decode MIME Type

[0042] The decode MIME-type software component object (FIG. 3) statesinclude initiate download 300, look up MIME type in table 302,non-playable type 304, and playable 306. As shown in FIG. 2 and repeatedin FIG. 3, the initiate download state 300 is entered when a mediastream download is intercepted 222 or a user clicks on a link 220. TheMIME-type received download is analyzed by the decode MIME-type softwarecomponent object transitioning 312 to the look up MIME type in tablestate 302. The analysis is performed by searching a look-up table ofvarious MIME types and identifying the MIME type as one that is playableor non-playable by the media player. If the MIME type is not found inthe table the media stream is non-playable by the media player. As aresult, the decode MIME-type software component object transitions 314to the non-player type state 304. If the MIME type is found in thetable, the download of the media stream is canceled and the decodeMIME-type software component object transitions 316 to the playable-typestate 306. Thus, playable type is defined as a MIME type that theuniversal media player has found within the look-up table. Asillustrated in FIG. 2 and described above, if the MIME type is anon-playable type, media playing defaults to a resident media player,having the ability to play the media, which could involve downloadinganother media player from a remote server.

Cue Media

[0043] The cue media (FIG. 4) software component object states includeinstantiate COM object for MIME type 400, start idle player with mediastream 402, stop and hide current player 404, show idle player 406, andserve up the media stream if storing the media stream 408. As shown inFIG. 2 and repeated in FIG. 4, in response to the insertion of a CD/DVD214, receiving a remote navigation event 216, receiving a video/audiotelephone call 218, and receiving a playable type media stream 212, thecue media software object components enters the instantiate a COM objectfor the MIME-type state 400 that is associated with the media stream.Instantiation is defined as creating a media object component withmember functions to control the media object. Typically, a mediacomponent object is an object-oriented software component base class orfoundation consisting of member functions of subclasses or othercomponents relating to media that control the media component. As willbe understood by those skilled in the art, examples of softwarecomponents relating to media member functions are audio, speaker, audioplay, video, and video play.

[0044] When the COM object for the MIME type has been instantiated, thecue media software object component transitions 420 to the start idleplayer with media stream state 402. If the current media player issynchronized together with a second media player, a remote navigationevent 410 is sent to the second media player.

[0045] When the media stream is ready, the cue media software objectcomponent transitions 422 to the stop and hide current media playerstate 404. If media is currently playing, this transfer causes thecurrent media player to stop and be hidden. Then, the cue media softwareobject component transitions 424 to the show idle player state 406. Fromthe show idle player state, the cue media software object componenttransitions 426 to the serve up the media stream if storing the mediastream state 408. As is understood to one skilled in the art ofobject-oriented programming, hiding an application temporarily removesthe onscreen display of an application's active window while leaving theapplication running. Here, stopping inhibits an audio output if one isbeing generated.

[0046] If a current media player is not executing when the media streamis ready or if a current media player is remotely synchronized with asecond media player and both media streams are ready, the cue mediasoftware object component transitions 425 directly to the show idleplayer state 406 from the start idle media player with media streamstate 402. Then the cue media software object component transitions tothe serve up the media stream if storing the media stream state 418.

Playing

[0047] The playing software component object (FIG. 5) states includeplaying 500, change volume 502, STOP player (END) 504, NEXT 506, PAUSE508, send remote PAUSE event 510, send remote NEXT event 512, sendremote STOP event 514, MINIMIZE/MAXIMIZE player 516, send remotePREVIOUS event 520, and PREVIOUS 522. When the universal media playertransitions to the playing state 208 (FIG. 2), the playing softwarecomponent object enters the playing state 500. From the playing state500, a user can cause the playing software component object totransition to any of the other states by selecting the appropriate oneof a number of control operations or events such as change volume, stop,next, pause, previous, and play. Enabling one of these controloperations using a mouse or other cursor control device in aconventional manner causes the illustrated transition to take place.These events are similar to controls on a CD player, or VCR, etc. Thecontrol events also include minimize/maximize player interface window516. Some additional events allow communication between two mediaplayers synchronized together. These include receiving and sendingremote pause events 510, receiving and sending remote next events 512,receiving and sending remote previous events 520, and receiving andsending remote stop events 514. The nature and operation of the depictedevents will be better understood from the following description and theaccompanying functional logic interface screen figures.

Activate a Media Player Process

[0048]FIG. 6 is a recursive logic flowchart showing how a universalmedia player is activated in accordance with a preferred embodiment ofthe present invention. After processing commences, block 600, controlimmediately passes to decision block 602, where a test is performed todetermine if a user received a remote navigation event. A remotenavigation event occurs when two media players are synchronizedtogether. In one form, one computer is the server while the othercomputer is dependent upon the other. This allows both users to browseand to simultaneously play the same media stream provided by a remotesource. Alternatively, the one media player can function as the mediasource and the other media player receive media being played by thesource media player. If a remote navigation event has been received, atfunction block 618, the media stream is cued and control is passed todecision block 620. (How media is cued is illustrated in FIG. 8 anddescribed below.) At decision block 620 a test is performed to determineif the media stream is ready. When the media stream is ready, atfunction block 622, the universal media player is enabled to activateits interface and play the media. (How media is played is illustrated inFIGS. 9A and 9B and described below.) After playing ends by, forexample, a user activating a stop button, control passes to end block624.

[0049] If the user did not receive a remote navigation event, programcontrol cycles to decision block 604 where a test is performed todetermine if a user inserted a CD or DVD. If the user inserted a CD orDVD, at function block 618, the media stream is cued and control ispassed to decision block 620. As before, when the media stream is ready,at function block 622, the universal media player is enabled to play themedia. When the media ends, control passes to end block 624.

[0050] If the user did not insert a CD or DVD, program control cycles todecision block 606, where a test is performed to determine if a userreceived a video telephone call. An example of the video telephoneprogram that can be used with the present invention is WindowsNetMeeting™. If the user received a video telephone call, at functionblock 618, the telephone call media stream is cued and program controlis passed to decision block 620. As before, when the media stream isready, at function block 622, the universal media player is enabled toplay the media, i.e., provide audio and video output. When the videotelephone call ends, program control passes to end block 624.

[0051] If the user did not receive a video telephone call, controlcycles to decision block 608 where a test is made to determine if a userclicked on a uniform resource link (URL). If the user clicked on a URL,at function block 612, the MIME type of the media stream associated withthe URL is described. As noted above, MIME is an acronym forMultipurpose Internet Mail Extensions. As is known to those skilled inthe Internet art, MIME types are extensions of the SMTP (Simple MailTransfer Protocol) that permit data, such as video, sound, and binaryfiles, to be transmitted without having to be translated into ASCIIformat first. MIME types describe the contents of the document. MIME ispart of HTTP, and both Web browsers and HTTP servers use MIME tointerpret e-mail files they send and receive. (How MIME types aredecoded is illustrated in FIG. 7 and described below.) After the MIMEtype is decoded, at decision block 614, a test is made to determine ifthe identified MIME type is playable by the media player. If theuniversal media player is not able to play the MIME type associated withthe media stream, a default media player capable of playing the media isenabled. See block 616. As is conventional, if the default media playeris not resident on the computer, a download window may open to allow theuser to download a copy of the default media player. When use of thedefault media player ends, by, for example, a user activating a stopbutton, the media stream ending, etc., program control passes to endblock 624. If the MIME type is playable, at function block 618, themedia stream is cued and control is passed to decision block 620. Asbefore, when the media stream is ready, at function block 622, theuniversal media player is activated to play the media stream. When themedia stream ends, a user activates a stop button or some othertermination action occurs, program control passes to end block 624.

[0052] If the user did not click on an URL, program control passes todecision block 610, where a test is performed to determine if the systemdetected a download of a media stream. This could occur, for example, bythe system opening a window having an instance of a player embedded inthe window. If the system detects a media stream download, at functionblock 612, the MIME type associated with the media stream is decoded.Then, as before, at decision block 614, a test is performed to determineif the identified MIME type is playable by the media player. If so, alsoas before, at function block 618, the media stream is cued, programcontrol is passed to decision block 620, and the media stream is played(block 622). If the universal media player is not able to play the MIMEtype associated with the media stream, then as before (function block616), a default media player is enabled. Program control passes to endblock 624 when media stream processing ends.

[0053] If the system did not detect a media stream download, theforegoing cycle is repeated.

Decode MIME Type Process

[0054]FIG. 7 is a flowchart illustrating logic for decoding the MIMEtype of the media stream suitable for use in FIG. 6. Processingcommences at block 700 and immediately passes to function block 702where a download of the media is initiated. Then, at function block 704,the download is analyzed to determine the MIME type. Then a test isperformed at decision block 706 to determine if the MIME type isplayable by the universal media player. More specifically, theidentified MIME type is compared to playable MIME types stored in alook-up table. If the MIME type is playable, i.e., included in thetable, program control is passed to function block 710 where aplayable-type flag is set to true. Then the program control is passed tofunction block 712 where the download is canceled. Then, at block 714,processing ends. However, if the MIME type is not playable by theuniversal media player, program control is passed to function block 708where the playable type is set to false. Then the download ends (block712) and processing terminates (block 714).

Cue Media Stream Process

[0055]FIG. 8 is a flowchart illustrating logic for cueing a media streamsuitable for use in FIG. 6. Processing commences at block 800 andimmediately passes to function block 802 where a COM object for the MIMEtype is instantiated. Then, program control is passed to a decisionblock 804 where a test is made to determine if the COM object is ready.The COM object is ready when it has established a connection. If COM isnot ready, control is passed to decision block 806 where a test is madeto determine if the time to establish connection has timed out. If not,then program control is passed back to function block 802 to continuethe instantiation of the COM object for the MIME type. If the time toestablish connection times out before the COM object is ready, controlpasses to block 828 where processing ends.

[0056] If the COM object is ready before time out occurs, programcontrol is passed to function block 808 where an idle universal mediaplayer is started with the media stream. Next, control is passed to adecision block 810 where a test is made to determine if the started idleuniversal media player is remotely synchronized. If the idle universalmedia player is remotely synchronized, program control is passed tofunction block 812 where a remote navigation event is sent. Next,control is passed to a decision block 814 where a test is made todetermine if both media streams are ready. When both media streams areready, program control is passed to function block 816 and processingcontinues in the manner described below. If both media streams are notready, the test performed by decision block 814 is repeated.

[0057] If the idle palyer is not remotely synchronized (block 810), atest is made at decision block 815 to determine if the media stream isready. If the media stream is ready, program control is passed tofunction block 816 and processing continues in the manner describedbelow. If the media stream is not ready, the test performed by decisionblock 815 is repeated.

[0058] When the media stream or streams are ready (block 814 or block815), a test is performed at decision block 816 to determine if anythingis currently playing. If the media stream is ready and nothing iscurrently playing, program control is passed to function block 824 wherethe interface of the idle universal media player is shown, i.e.,displayed. If the media stream is ready and a media stream is playing ona media player, program control is passed to function block 818 wherethe current media player is stopped and hidden. Program control thenpasses to function block 824.

[0059] Next, program control is passed to decision block 820, where atest is performed to determine if the media stream is stored. If themedia stream is stored, program control is passed to function block 822where the media stream is served up. Program control then passes tofunction block 826 where a media stream ready flag is set to true. Themedia stream could be stored at a server site or local disk drive. Ifthe media stream is not stored, program control is passed directly tofunction block 826 where the media stream ready flag is set to true.After the media stream ready flag is set to true, program control ispassed to end block 826 and processing ends.

Activate Universal Media Player Media Process

[0060]FIGS. 9A and 9B are flowcharts illustrating recursive logic foractivating the universal media player interface and causing theuniversal media player to play a media stream suitable for use in FIG.6. Processing commences at block 900. Program control immediately passesto decision block 902 to determine if a user has selected the playcontrol button of the universal media player interface which at thispoint is idle. If the user has not selected the play control button,which is the only button of the idle universal media player interfacethat is enabled at this time, program control is passed to block 932,which causes a recursive call to be made to start block 900 of the logicillustrated in FIG. 9A.

[0061] If the user has selected the play control button, program controlis passed to function block 904 where the universal media playerinterface is activated. (Logic for activating the media player interfaceis illustrated in FIG. 10 and described below.) Processing continues tofunction block 912 where the media stream is played by the universalmedia player. As discussed above and shown in FIG. 5, when the universalmedia player is activated a user has various controls available, whichare depicted by several decision blocks in FIGS. 9A and 9B. The decisionblocks respond to user-selected media player interface controls, such asminimize/maximize media player interface, volume, stop, previous, nextand next. In addition to these decision blocks additional decisionblocks determine if remote media player interface events such as pause,stop, previous, and next have been received.

[0062] At decision block 906, a test is performed to determine if theuser selected minimize or maximize. If the user has selected minimize ormaximize program, control passes to function block 910, where a minimizeor maximize player flag is set to true, which results in a drop-downmenu being displayed to allow a user to increase or decrease the size ofthe universal media player interface as illustrated in FIG. 17B anddescribed below. Then, program control returns to block 912. If the userdid not select minimize or maximize program, control returns immediatelyto block 904.

[0063] At decision block 908, a test is performed to determine if a userselected pause control. If the user selected pause control program,control passes to function block 922, where a remote pause event issent, if the universal media player is synchronized with another playerand, then, to function block 926 where a pause flag is set to true.Setting the pause flag to true causes the operation of the universalmedia player to pause. Program control then cycles to block 912. If theuser has not selected the pause control, program control immediatelycycles to block 904.

[0064] At decision block 924, a test is performed to determine if themedia player has received a remote pause event signal. If so, programcontrol is passed to function block 926 where the pause flag is set totrue. Then, program control returns to block 904. If no remote pauseevent is received, program control returns immediately to block 904.

[0065] At decision block 914, a test is performed to determine if theuser has selected volume control. If so, program control passes tofunction block 920 where a change volume flag is set to true. Theuniversal media player then responds to volume control inputs receivedfrom the user in the manner described below. Then, program controlreturns to block 904. If the user has not selected volume control,program control returns immediately to block 904.

[0066] At decision block 918, a test is performed to determine if theuser has selected stop control. If the user has selected stop control,program control passes to function block 924 where a remote stop eventmessage is sent and, then, to function block 928 where the universalmedia player interface is deactivated. Program control then cycles tostop block 932. If the user has not selected stop control, programcontrol returns immediately to block 904.

[0067] At decision block 930, a test is made to determine if theuniversal media player has received a remote stop event signal. If so,control is passed to function block 928 where the universal media playerinterface is deactivated. Processing then cycles to stop block 932.Logic illustrating the deactivation of the embedded universal mediaplayer interface is illustrated in FIG. 11 and described below.

[0068] Turning now to FIG. 9B, at decision block 934, a test isperformed to determine if the user has selected next control. If so,program control passes to function block 936 where a remote next eventsignal is sent and, then, to function block 938 where a next flag is setto true. Setting the next flag to true causes the current media item toend and the next media item to start, such as the next song on a CD.Similar action (which is not described here) occurs when a user selectsa fast forward control. Then program control returns to block 904. Ifthe user has not selected next control, program control returnsimmediately to block 904.

[0069] At decision block 940, a test is made to determine if theuniversal media player has received a remote next event signal. If so,program control is passed to function block 938 where the next flag isset to true. Then program control returns to block 904. If the universalmedia player has not received a remote next event signal, controlreturns immediately to block 904.

[0070] At decision block 942, a test is performed to determine if theuser has selected previous control. If so, program control passes tofunction block 944, where a remote previous event signal is sent and,then, to function block 946 where a previous flag is set to true.Setting the previous flag to true causes the current media item to endand the previous media item to start, such as the previous song on a CD.Similar action (which is not described here) occurs when the userselects a rewind control. Then, program control returns to block 912. Ifthe user has not selected previous control, program control returnsimmediately to block 912.

[0071] At decision block 948, a test is made to determine if theuniversal media player received a remote previous event signal. If so,control is passed to function block 942 where the previous flag is setto true. Then, program control returns to block 904. If the universalmedia player has not received a remote signal, program control returnsimmediately to block 904.

Activate Media Player Interface Process

[0072]FIGS. 10A and 10B are flowcharts illustrating logic for activatingthe media player interface suitable for use in FIG. 9A. Processingcommences at block 1000 and program control immediately passes tofunction block 1002 where an active media player interface is displayedand, then, to function block 1004 where the play control button on themedia player interface is illuminated. From block 1004, program controlcontinues to function block 1006 where the pause button is changed andilluminated in place of the play button. After block 1006, programcontrol is passed to function block 1008 where a “tuning in” label isadded to the menu of the universal media player interface. Then, atdecision block 1010, a test is performed to determine if the mediastream is a video file. Video files include video telephone calls, DVDs,and all visual files. If the media stream is not a video file, controlis passed to function block 1018 causing an illuminated progress mediapresentation indicator to be displayed. In this case, it is notnecessary to display a video screen since the media stream is only audiowhich includes radio stations, music files, and CDs.

[0073] If the media stream is a video file, program control is passed tofunction block 1012, causing an “opening” label to be displayed on aview media player menu. Program control then passes to function block1014 causing min/max controls to be displayed and, then, to functionblock 1016, causing a child window to be added to the universal mediaplayer interface. Program control then cycles to function block 1018where, as noted above, an illuminated progress media presentationindicator is displayed. Control then passes to function block 1020 wherea music (or other as appropriate) label identifier is displayed on themenu of the universal media player interface.

[0074] Control is next passed through several decision blocks whichdetermine if the user has performed selections that cause selectedcontrol button flags associated with the universal media playerinterface (such as volume, previous, next, minimize/maximize, pause, andstop) to be set true in the manner previously described.

[0075] At decision block 1022, a test is performed to determine if theuser has selected change volume. If so, program control passes tofunction block 1024 where the program responds to the activated volumecontrol on the universal media player interface. Then control cycles tofunction block 1026 where the change volume flag is set to false.Control then shifts to end block 1028 where processing ends.

[0076] If the test at decision block 1022 is negative, the processcycles to decision block 1030, where a test is performed to determine ifthe user selected previous. If so, program control is passed to functionblock 1032 where the universal media player selects the previous mediaitem. Then, processing shifts to function block 1034 where the previousflag is set to false. Next, processing cycles to end block 1028 whereprocessing ends. (As noted above, rewind, while not shown, functions ina like manner to previous.)

[0077] If the test at decision block 1030 is negative, the programcontrol cycles to decision block 1036 when a test is performed todetermine if the user selected next. See FIG. 1013. If so, programcontrol is passed to function block 1038, where the universal mediaplayer selects the next media item. Then the process shifts to functionblock 1040 where the next flag is set to false. Processing then shiftsto block 1028 where processing ends. (As also noted above, fast forward,while not shown, functions in a like manner to previous.)

[0078] If the test at decision block 1036 is negative, program controlcycles to decision block 1042, where a test is performed to determine ifthe user selected maximize. If so, program control is passed to functionblock 1044 causing the universal media player interface to be displayedin another window larger than before. Program control then cycles tofunction block 1046 where the maximize flag is set to false. Next,processing shifts to block 1028 where processing ends.

[0079] If the test at decision block 1042 is negative, program controlcycles to decision block 1048 where a test is performed to determine ifthe user has selected minimize. If so, program control is passed tofunction block 1050, causing the universal media player interface toreturn to a docked size and location (described below). Then the processcycles to function block 1052 where the minimize flag is set to false.Processing then shifts to end block 1028 where processing ends.

[0080] If the test at decision block 1048 is negative, the programcontrol cycles to decision block 1054 where a test is performed todetermine if the user has selected pause. If so, program control ispassed to function block 1056, causing a still picture of a visual fileor stop video output to be displayed. Then, the process cycles tofunction block 1058 where the pause flag is set to false. Then,processing shifts to end block 1028 where processing ends.

Deactivate the Media Player Interface

[0081]FIG. 11 is a flowchart illustrating logic for deactivating theuniversal media player interface suitable for use in FIG. 9A. Processingcommences at block 1100 and control immediately passes to function block1102 causing the stop control button on the media player interface to beilluminated. Then, at decision block 1104, a test is performed todetermine if the media stream is a video or audio file. If the mediastream is a video file, program control is passed to function block1106, causing the child window to recess into the universal media playerinterface. The processing shifts to block 1108 where processing ends. Ifthe media is an audio file, control is passed directly to function block1108 where processing ends.

Media Player Interface

[0082] The foregoing description of a universal media player will bebetter understood by considering the foregoing description and FIGS.1-11 in connection with FIGS. 12-17, which are copies of screen shots ofthe interface of an embedded universal media player formed in accordancewith this invention.

[0083]FIG. 12 is a copy of the interface 1200 of an exemplary Internetbrowser including the idle interface 1202 of an embedded universal mediaplayer formed in accordance with this invention. The embedded universalmedia player interface 1202 is located in the frame area of the Internetbrowser interface 1200. The frame of an Internet browser interface isthe portion of the interface that is persistent, i.e., normally shown.Other areas normally change as the Internet browser browses Internetsites. Preferably, the embedded universal media player interfaceprovides a user with a single interface having common control buttonssuch as play 1204, stop 1208, volume 1206, next 1210, and previous 1212.The embedding of a universal media player in a Web browser allows a userto navigate between different sources of media without requiring thedownload of separate media players for each of the media sources havinga different media format.

[0084]FIG. 13 illustrates how the embedded universal media playerinterface looks when activated. More specifically, FIG. 13 illustratesan Internet browser interface 1300 with an universal media playerinterface 1310 similar to that shown in FIG. 12. The play control button1304 of the illustrated universal media player interface is illuminated.Also a menu bar 1308 containing the label “tuning in” 1306 has beenadded to the universal media player interface. A further addition is acontrol 1302 that allows a user the option of launching the universalmedia player interface in a larger window.

[0085]FIG. 14 illustrates how the embedded universal media player lookswhen activated to receive a video file. More specifically, FIG. 14illustrates an Internet browser interface 1400 with an universal mediaplayer interface 1402. As illustrated when the universal media player isto play a video, including a video teleconference over the Internet, theuniversal media player interface displays an “opening” label 106 on themenu bar 1404 of the universal media player interface. In addition, aprogress media presentation indicator may be displayed.

[0086]FIG. 15 illustrates how the embedded universal media playerinterface looks when playing a video file. More specifically, FIG. 15illustrates an Internet browser interface 1500 with an universal mediaplayer interface 1502 located in the frame of the Internet browserinterface. In response to a user activating the universal media playerwith a request to play a video file, including a DVD, anInternet-derived video file, or an Internet video teleconference, theembedded universal media player interface illuminates a pause button1504 in place of the play button, displays a label identifying the mediaon the media player menu bar 1506, displays an illuminated progressmedia presentation indicator 1508, and displays the video media in achild window 1510. Optionally, a media player menu 1512 is displayed.

[0087]FIG. 16 illustrates how the embedded universal media playerinterface looks when playing an audio file. More specifically, FIG. 16illustrates an Internet browser interface 1600 with an media playerinterface 1602 located in the frame of the Internet browser interface.When the embedded universal media player interface is playing an audiofile such as a music file, a CD or a radio station, an illuminated pausebutton 1606 is displayed in place of the play button, a label or titleidentifying the media being played is displayed on the menu bar 1604,and an illuminated progress media presentation indicator 1608 isdisplayed.

[0088]FIGS. 17A and 17B illustrate how the embedded universal mediaplayer interface changes when launching the embedded universal mediaplayer interface in a larger window for an expanded view of the videobeing shown. More specifically, FIG. 17A illustrates an Internet browserinterface 1700 with a universal media player interface 1702 located inthe frame of the browser. If the user wants to launch the media playerin a larger window for expanded view of the media 1706 being viewed, theuser moves a cursor over an enlarge control 1704. Clicking on theenlarge control 1704 causes the embedded universal media playerinterface to be launched in an enlarged window. FIG. 17B illustrates alarger size embedded universal media player interface 1708. Morecontrols 1710 are added to allow a user to select additional optionssuch as previous track 1712, fast rewind 1714, fast forward 1716, andnext track 1718. Selection of control 1724 closes the media playerinterface window 1708. Selection of control 1722 causes the media playerinterface to expand further into a still larger window, and selection ofcontrol 1720 causes the universal media player interface to return toits normal (small) size.

[0089] While a preferred embodiment of the invention has beenillustrated and described, it is to be understood that various changescan be made therein without departing from the spirit and scope of theinvention as defined by the appended claims. For example, the sequenceand nature of the testing of the various control functions should betaken as exemplary, not limiting. Hence, it is to be understood that theinvention can be practiced otherwise than as specifically describedherein.

The embodiments of the invention in which an exclusive property orprivilege is claimed are defined as follows:
 1. A computer-basedimplementable method of playing media designed for playing on varioustypes of media players comprising: (a) providing a universal mediaplayer that includes an media player interface with user actuablecontrol buttons; (b) determining whether incoming media to be played isplayable by the universal media player; and (i) if the incoming media tobe played is playable by the universal media player, intercepting theincoming media and directing the incoming media to the universal mediaplayer; or (ii) if the media to be played is not playable by theuniversal media player, allowing the incoming media to enable a defaultmedia player capable of playing the media.
 2. The method of claim 1,wherein determining whether the incoming media to be played is playableby the universal media player comprises: determining the media type ofthe incoming media; and searching a table of media types to determinewhether the media type of the incoming media is playable by theuniversal media player.
 3. The method of claim 2, wherein the table ofmedia types is a MIME table.
 4. The method of claim 1, wherein theincoming media include audio and video files.
 5. The method of claim 1,further including cueing the media if the media is playable on theuniversal media player.
 6. The method of claim 5, wherein cueing themedia includes instantiating a media component for the incoming media.7. The method of claim 1, wherein the incoming media is a download froma media server.
 8. The method of claim 1, wherein the incoming mediaresults from a user clicking on a URL link to a server that storesmedia.
 9. The method of claim 7, wherein the universal media player alsoplays media produced by a media disc.
 10. The method of claim 1, whereinthe incoming media is controlled by a remote navigation event.
 11. Themethod of claim 1, wherein the universal media player also plays mediain the form of a video telephone call.
 12. The method of claim 1,further comprising: determining whether the incoming media is ready tobe played; when the incoming media is ready to be played, initializingan idle media player; and directing the incoming media to theinitialized idle media player.
 13. The method of claim 11, furthercomprising displaying an idle media player interface prior to when theincoming media is ready to be played.
 14. The method of claim 1, furthercomprising: determining whether the incoming media is ready to beplayed; determining whether a current media player is playing media;when the incoming media is ready to be played, if a current media playeris playing media, stopping and hiding the current media player andinitializing an idle media player; and directing the incoming media tothe initialized idle media player.
 15. The method of claim 14, whereinif the incoming media component is ready, it includes determiningwhether a time to establish connection has timed out.
 16. The method ofclaim 4, further comprising in response to determining that the incomingmedia is not ready to be played, if a current media player is playingthe media, allowing the current media to continue playing media untilthe incoming media is ready to be played.
 17. The method of claim 1,further comprising: determining if the universal media player isremotely synchronized with another media player; and if the universalmedia player is remotely synchronized with another media player, sendinga remote navigation event to the other media player.
 18. The method ofclaim 1, further comprising: determining whether the incoming media isready to be played; when the incoming media is ready to be played,displaying an activated universal media player; and in response toreceiving a request from a user to play, the incoming media activatingthe universal media player to play the media.
 19. The method of claim18, further comprising, in response to receiving a request to change thevolume of the media, changing the volume of the media.
 20. The method ofclaim 18, further comprising, in response to receiving a request tochange the size of the universal media player interface, changing thesize of the universal media player interface.
 21. The method of claim18, further comprising, in response to receiving a request to pause theincoming media, pausing the playing of the incoming media.
 22. Themethod of claim 21, wherein, in response to receiving a request to pausethe media, also sending a remote pause event signal.
 23. The method ofclaim 18, further comprising, in response to receiving a remote pauseevent, pausing the playing of the incoming media.
 24. The method ofclaim 18, further comprising, in response to receiving a request tochange to a previous track of the media, changing to the previous trackof the media.
 25. The method of claim 27, wherein, in response toreceiving a request to advance to the next track of the media, sending aremote next event signal.
 26. The method of claim 18, furthercomprising, in response to receiving a remote previous event, changingto a previous track of the media.
 27. The method of claim 17, furthercomprising, in response to receiving a request to advance to a nexttrack of the media, advancing to a next track of the media.
 28. Themethod of claim 27, wherein, in response to receiving a request toadvance to the next track of the media, sending a remote next eventsignal.
 29. The method of claim 18, further comprising, in response toreceiving a remote next event, changing to the next track of the media.30. The method of claim 18, further comprising, in response to receivinga request to stop playing the media, deactivating the media player tostop the playing of the media.
 31. The method of claim 30, wherein, inresponse to receiving a request to stop playing the media, sending aremote stop event signal.
 32. The method of claim 18, furthercomprising, in response to receiving a remote stop event, deactivatingthe media player to stop the playing of the media.
 33. Acomputer-readable medium containing computer-implementable instructionsfor performing the method of any one of claims 1-32.
 34. A computerprogram for carrying out the computer-implementable method recited inany one of claims 1-33 embedded in another computer program.
 35. Acomputer program as claimed in claim 34, wherein the other program is anInternet browser.
 36. A computer program as claimed in claim 35, whereinthe interface of the universal media player is located in a persistentregion of the interface of the Internet browser.
 37. A computer programas claimed in claim 36, wherein the interface of the Internet browserincludes a frame and wherein the interface of the universal media playeris located in the frame of the interface of the Internet browser.